<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns="http://www.w3.org/1999/xhtml"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	>

	<xsl:output method="xml" omit-xml-declaration="yes" indent="yes" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"/>

	<xsl:key name="elements" match="xsd:element" use="@name"/>
	<xsl:key name="attributes" match="xsd:attribute" use="@name"/>
	<xsl:key name="enumerations" match="xsd:enumeration" use="@value"/>

	<xsl:template match="text()"/>

	<xsl:template match="xsd:element">
		<xsl:if test="generate-id() = generate-id(key('elements', @name)[1])">
			<xsl:value-of select="@name"/>
			<xsl:text> (element)</xsl:text>
			<xsl:call-template name="docs"/>
			<xsl:text>&#10;</xsl:text>
		</xsl:if>
		<xsl:apply-templates/>
	</xsl:template>

	<xsl:template match="xsd:attribute">
		<xsl:if test="generate-id() = generate-id(key('attributes', @name)[1])">
			<xsl:value-of select="@name"/>
			<xsl:text> (attribute)</xsl:text>
			<xsl:call-template name="docs"/>
			<xsl:text>&#10;</xsl:text>
		</xsl:if>
		<xsl:apply-templates/>
	</xsl:template>

	<xsl:template match="xsd:enumeration">
		<xsl:if test="generate-id() = generate-id(key('enumerations', @value)[1])">
			<xsl:value-of select="@value"/>
			<xsl:text> (enumeration)</xsl:text>
			<xsl:call-template name="docs"/>
			<xsl:text>&#10;</xsl:text>
		</xsl:if>
		<xsl:apply-templates/>
	</xsl:template>

	<xsl:template name="docs">
		<xsl:if test="xsd:annotation/xsd:documentation">
			<xsl:text> described as "</xsl:text>
			<xsl:value-of select="normalize-space(xsd:annotation/xsd:documentation)"/>
			<xsl:text>"</xsl:text>
		</xsl:if>
	</xsl:template>

</xsl:stylesheet>
